/*
 * Clase: Doble
 *
 */
package ecuacion;

/**
 * Clase Doble Implementación de Numero para Double
 *
 */
public class Doble implements Numero<Doble> {

    private double valor;

    /**
     * Constructor
     *
     * @param Numero Double
     */
    public Doble(double n) {
        valor = n;
    }

    /**
     * Método para comparación
     *
     * @return Devuelve 1 si es mayor, -1 si es menor y 0 si es igual
     */
    public int comparar(Doble e) {

        if (this.valor < e.valor) {
            return -1;
        }

        if (this.valor > e.valor) {
            return 1;
        }

        return 0;
    }

    /**
     * Convierte a texto
     *
     * @return String del Número
     */
    public String toString() {
        return "" + valor;
    }

    /**
     * Suma el Nro. recibido
     *
     * @return Resultado de la Suma
     */
    public Doble sumar(Doble e) {
        return new Doble(this.valor + e.valor);
    }

    /**
     * Resta el Nro. recibido
     *
     * @return Resultado de la Resta
     */
    public Doble restar(Doble e) {
        return new Doble(this.valor - e.valor);
    }

    /**
     * Multiplica el Nro. recibido
     *
     * @return Resultado de la Multiplicación
     */
    public Doble multiplicar(Doble e) {
        return new Doble(this.valor * e.valor);
    }

    /**
     * Multiplica por la inversa del Nro. recibido
     *
     * @return Resultado Inverso de la Multiplicación
     */
    public Doble multiplicarInversa(Doble e) {
        return new Doble(this.valor * e.valor * -1);
    }

    /**
     * Divide el Nro. recibido
     *
     * @return Resultado de la División
     */
    public Doble dividir(Doble e) {
        return new Doble(this.valor / e.valor);
    }

    /**
     * Devuelve Cero en el Formato Especificado
     *
     * @return Doble 0
     */
    public Doble devuelveCero() {
        return new Doble(0);
    }

    /**
     * Devuelve Uno en el Formato Especificado
     *
     * @return Doble 1
     */
    public Doble devuelveUno() {
        return new Doble(1);
    }

    /**
     * Verifica si es cero o no
     *
     * @return true si es cero y false en caso contrario
     */
    public boolean esCero() {
        return this.valor == 0;
    }
}
